home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / dfix.arc / AFIX.ASM next >
Encoding:
Assembly Source File  |  1985-03-15  |  1.5 KB  |  91 lines

  1. ; Some DOS utilities for Lattice C
  2. ; Only use with the 'Small model'
  3.  
  4.     include    dos.mac
  5.  
  6.     dseg
  7.     public    _alloc_tab
  8.  
  9. alc    struc
  10.     d    dw    (?)
  11.     mb    db    (?)
  12.     spc    db    (?)
  13.     nc    dw    (?)
  14.     sss    dw    (?)
  15. alc    ends
  16. _alloc_tab    alc    <>
  17.     endds
  18.  
  19.     pseg
  20.     public    defaultdev, devAlloc, dosVersion
  21.     public    rdDevice, wrDevice
  22.  
  23. defaultdev proc    near
  24.     push    bp
  25.     mov    ah,19h
  26.     int    21h
  27.     mov    ah,0
  28.     pop    bp
  29.     ret
  30. defaultdev endp
  31.  
  32. devAlloc proc    near
  33.     push    bp
  34.     push    ds
  35.     mov    dx, _alloc_tab.d
  36.     inc    dl        ; A=1,...
  37.     mov    ah,1ch
  38.     int    21h
  39.     mov    ah,ds:[bx]
  40.     pop    ds
  41.     mov    _alloc_tab.mb, ah
  42.     mov    _alloc_tab.spc, al
  43.     mov    _alloc_tab.nc, dx
  44.     mov    _alloc_tab.sss, cx
  45.     pop    bp
  46.     ret
  47. devAlloc endp
  48.  
  49. dosVersion proc    near
  50.     push    bp
  51.     mov    ah,30h
  52.     int    21h
  53.     pop    bp
  54.     ret
  55. dosVersion endp
  56.  
  57. rdDevice proc    near
  58.     ; rdDevice(dev, start_sector, number_of_sectors, buffer_address) 
  59.     push    bp
  60.     mov    bp,sp
  61.     mov    al,[bp+4]    ; device #
  62.     mov    dx,[bp+6]    ; logical sector number
  63.     mov    cx,[bp+8]    ; no. sectors
  64.     mov    bx,[bp+0ah]    ; buffer address
  65.     int    25h
  66.     pop    bx        ; remove flags
  67.     jc    err1
  68.     mov    ax,0        ; return 0 for no error
  69. err1:    pop    bp
  70.     ret
  71. rdDevice endp
  72.  
  73. wrDevice proc    near
  74.     ; wrDevice(dev, start_sector, number_of_sectors, buffer_address) 
  75.     push    bp
  76.     mov    bp,sp
  77.     mov    al,[bp+4]    ; device #
  78.     mov    dx,[bp+6]    ; logical sector number
  79.     mov    cx,[bp+8]    ; no. sectors
  80.     mov    bx,[bp+0ah]    ; buffer address
  81.     int    26h
  82.     pop    bx        ; remove flags
  83.     jc    err2
  84.     mov    ax,0        ; return 0 for no error
  85. err2:    pop    bp
  86.     ret
  87. wrDevice endp
  88.     endps
  89.  
  90.     end
  91.